package options

import (
	genericoptions "vite-tsc-gin/pkg/options"
)

type Options struct {
	GenericServerRunOptions *genericoptions.ServerRunOptions `json:"server"   mapstructure:"server"`
	//GRPCOptions             *genericoptions.GRPCOptions            `json:"grpc"     mapstructure:"grpc"`
	InsecureServing *genericoptions.InsecureServingOptions `json:"insecure" mapstructure:"insecure"`
	SecureServing   *genericoptions.SecureServingOptions   `json:"secure"   mapstructure:"secure"`
	MySQLOptions    *genericoptions.MySQLOptions           `json:"mysql"    mapstructure:"mysql"`
	RedisOptions    *genericoptions.RedisOptions           `json:"redis"    mapstructure:"redis"`
	JwtOptions      *genericoptions.JwtOptions             `json:"jwt"      mapstructure:"jwt"`
	//Log             *log.Options                           `json:"log"      mapstructure:"log"`
	//FeatureOptions  *genericoptions.FeatureOptions         `json:"feature"  mapstructure:"feature"`
}

func NewOptions() *Options {
	o := Options{
		GenericServerRunOptions: genericoptions.NewServerRunOptions(),
		InsecureServing:         genericoptions.NewInsecureServingOptions(),
		SecureServing:           genericoptions.NewSecureServingOptions(),
		MySQLOptions:            genericoptions.NewMySQLOptions(),
		RedisOptions:            genericoptions.NewRedisOptions(),
		JwtOptions:              genericoptions.NewJwtOptions(),
	}

	return &o
}
